package ProyectoX.Source.Movimientos;

import java.awt.event.KeyListener;
import java.awt.Point;
import java.awt.event.KeyEvent;

import ProyectoX.Source.Disparos.Disparo;
import ProyectoX.Source.Naves.NaveJugador;
import ProyectoX.Source.PowerUps.PowerUp;

/**
 * Clase basada en el repositorio subido a la catedra por el asistente Martin Larrea (Clase 'MenteTeclado')
 * http://2014-tdp-proyecto-x-1943.googlecode.com/svn/trunk/
 * Nota: Esta es una version modificada de la original.
 *
 */
public class MovimientosTeclado extends Movimientos implements KeyListener {
	
	
	public void preparar() {
		// TODO Auto-generated method stub

	}

	
	public void jugar() {
		this.start();

	}

	public void keyPressed(KeyEvent arg0) {
		NaveJugador nj = (NaveJugador) nave;
		switch(arg0.getKeyCode()) {
			case KeyEvent.VK_UP: {
				nj.setArriba(true);
				break;
			}
			case KeyEvent.VK_DOWN: {
				nj.setAbajo(true);
				break;
			}
			case KeyEvent.VK_LEFT: {
				nj.setIzq(true);
				break;
			}
			case KeyEvent.VK_RIGHT: {
				nj.setDer(true);
				break;
			}
			
			//PARA PROGRAMAR LO DEL DISPARO
			
			case KeyEvent.VK_A: {
				nj.setA(true);
				break;
			}
			
			case KeyEvent.VK_B: {
				boolean correcto = logicaJuego.romperTodo();
				if (correcto)
					juego.animacionBomba();
				break;
			}
			
		}
	}

	
	public void keyReleased(KeyEvent arg0) {
		NaveJugador nj = (NaveJugador) nave;
		switch(arg0.getKeyCode()) {
			case KeyEvent.VK_UP: {
				nj.setArriba(false);
				break;
			}
			case KeyEvent.VK_DOWN: {
				nj.setAbajo(false);
				break;
			}
			case KeyEvent.VK_LEFT: {
				nj.setIzq(false);
				break;
			}
			case KeyEvent.VK_RIGHT: {
				nj.setDer(false);
				break;
			}
			
			//PARA PROGRAMAR LO DEL DISPARO
			
			case KeyEvent.VK_A: {
				nj.setA(false);
				break;
			}
			
			case KeyEvent.VK_B: {
				nj.setB(false);
				break;
			}
			
		}
	}

	
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	
	public void run(){ //Verifica si la nave recoge powerups
		PowerUp pu = null;
		boolean coincidencia = false;
		while (!nave.estaMuerto()){
			for (Object p : logicaJuego.powUps()){
				PowerUp pow = (PowerUp) p;
				if (intersects(pow, nave)){
					pu = pow;
					coincidencia = true;
					break;
				}
				else
					coincidencia = false;
			}
			if (coincidencia){
				pu.efecto();
				logicaJuego.borrarPowerUp(pu);
				logicaJuego.subirPuntaje(pu.puntaje());
				juego.sacarPower(pu);
				coincidencia = false;
			}
		}
	}
	
	
}


